home *** CD-ROM | disk | FTP | other *** search
/ The PC-SIG Library 10 / The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso / PC_SIGCD / 05 / 4 / DISK0543.ZIP / PRECESS.BAS < prev    next >
BASIC Source File  |  1985-06-02  |  5KB  |  119 lines

  1. 10    CLS
  2. 20    REM
  3. 30    PRINT : PRINT : PRINT:
  4. 40    PRINT TAB(15)"================== PRECESS.BAS ======================"
  5. 50    PRINT
  6. 60    PRINT TAB(22) " ADAPTED  BY CHRIS SPRATT - JUNE, 1985 "
  7. 70    REM
  8. 80    PRINT  TAB(17) " FROM A PROGRAM IN ASTRONOMY MAGAZINE, AUGUST 1984"
  9. 90    PRINT TAB(23) " WRITTEN BY J. P. POOL AND R. L. BERRY"
  10. 100   GOSUB 1160
  11. 110   CLS: PRINT : PRINT : PRINT : PRINT:
  12. 120   REM
  13. 130   REM
  14. 140   REM
  15. 150       PRINT TAB(20) "THIS PROGRAM COMPUTES RIGOROUS PRECESSION"
  16. 160       PRINT TAB(20) "FROM A STRING REPRESENTATION OF RA AND DEC"
  17. 170       PRINT TAB(20) "AND RETURNS A STRING REPRESENTATION OF THE"
  18. 180       PRINT TAB(30) "PRECESSED COORDINATES."
  19. 190   REM
  20. 200   GOSUB 1160
  21. 210       R = .01745329#
  22. 220   REM
  23. 230   REM  ====== COMPUTE THE CONSTANTS OF PRECESSION ======
  24. 240   CLS: PRINT : PRINT:PRINT
  25. 250   PRINT TAB(20) :  INPUT  "INITIAL EPOCH";IN
  26. 260   PRINT
  27. 270   PRINT TAB(20) :  INPUT  "  FINAL EPOCH";FI
  28. 280   PRINT :PRINT :PRINT
  29. 290       T1 = FI - IN
  30. 300       T = T1/100
  31. 310       Z0 = ((2305.65*T) + (.302*T*T) + (.018 *T*T*T))
  32. 320       Z1 = R*(Z0/3600)
  33. 330       Z = (Z0+(.791*T*T))/3600
  34. 340       TH = R*(((2003.829#*T)-(.426*T*T)-(.042*T*T*T))/3600)
  35. 350   REM
  36. 360   REM  ==== INPUT COORDINATES AND PROPER MOTION ====
  37. 370   REM
  38. 380       PRINT TAB(20)"INITIAL RA:HH MM SS.F"
  39. 390       PRINT TAB(20): INPUT "         ";RA$
  40. 400       PRINT TAB(20)"INITIAL DC:+DD MM SS"
  41. 410       PRINT TAB(20): INPUT "         ";DEC$
  42. 420   PRINT TAB(20) :INPUT "PROPER MOTION: <MUra,MUdec>";MURA,MUDC
  43. 430   CLS
  44. 440       MURA = T1*15 * MURA/3600:MUDC = T1 *MUDC/3600
  45. 450       IRA = VAL(MID$(RA$,1,2))
  46. 460       IRA = IRA + VAL(MID$(RA$,4,2))/60
  47. 470       IRA = IRA + VAL(MID$(RA$,7,4))/3600
  48. 480       IRA = 15*IRA
  49. 490       IDC = VAL(MID$(DEC$,2,2))
  50. 500       IDC = IDC+VAL(MID$(DEC$,5,2))/60
  51. 510       IDC = IDC+VAL(MID$(DEC$,8,2))/3600
  52. 520       IF MID$(DEC$,1,1) ="-" THEN IDC = -IDC
  53. 530       AL0 = R*(IRA+MURA)
  54. 540       DL0 = R*(IDC+MUDC)
  55. 550   REM
  56. 560   REM   =========== PRECESS THE COORDINATES ==========
  57. 570   REM
  58. 580       A = COS(DL0)*SIN(AL0+Z1)
  59. 590       B = (COS(TH)*COS(DL0)*COS(AL0+Z1))-(SIN(TH)*SIN(DL0))
  60. 600       C = (SIN(TH)*COS(DL0)*COS(AL0+Z1))+(COS(TH)*SIN(DL0))
  61. 610       ALPMZ = ATN(A/B)/R
  62. 620       AL = (ALPMZ + Z)/15
  63. 630       IF B<0 AND A>0 THEN AL = AL+ 12
  64. 640       IF B<0 AND A<0 THEN AL = AL+ 12
  65. 650       IF B>0 AND A<0 THEN AL = AL+ 24
  66. 660       DL = ATN(C/SQR(1-C*C))/R
  67. 670   REM
  68. 680   REM  ==== CONVERT DECIMAL RA TO HH MM SS.F STRING ====
  69. 690   REM
  70. 700       RAH = FIX(AL)
  71. 710       RAM = INT(60*(AL-RAH))
  72. 720       RAS = INT(3600*(AL-RAH-(RAM/60)))
  73. 730       RAF = INT(36000!*(AL-RAH-(RAM/60)-(RAS/3600)))
  74. 740       RAH$ = STR$(RAH):RAM$ = STR$(RAM)
  75. 750       RAS$ = STR$(RAS) : RAF$ = STR$(RAF)
  76. 760       IF RAH<10 THEN MID$(RAH$,1)= "0"
  77. 770       IF LEN(RAH$) = 3 THEN RAH$ = MID$(RAH$,2,2)
  78. 780       IF RAM<10 THEN MID$(RAM$,1)= "0"
  79. 790       IF LEN(RAM$)=2 THEN RAM$=" "+RAM$
  80. 800       IF RAS<10 THEN MID$(RAS$,1) = "0"
  81. 810       IF LEN(RAS$) = 2 THEN RAS$ = " "+RAS$
  82. 820       PRA$ = RAH$+RAM$+RAS$+RAF$
  83. 830       MID$(PRA$,9)="."
  84. 840   REM
  85. 850   REM  ==== CONVERT DECIMAL DEC TO DD MM SS STRING ====
  86. 860   REM
  87. 870       IF DL<0 THEN SG$="-" ELSE SG$ = "+"
  88. 880       DL = ABS(DL)
  89. 890       DD = FIX(DL)
  90. 900       DM = INT(60*(DL-DD))
  91. 910       DS = INT(3600*(DL-DD-(DM/60)))
  92. 920       DD$ = STR$(DD) : DM$ = STR$(DM):DS$ = STR$(DS)
  93. 930       IF DD<10 THEN MID$(DD$,1) = "0"
  94. 940       IF LEN(DD$) = 3 THEN DD$ = MID$(DD$,2,2)
  95. 950       IF DM<10 THEN MID$(DM$,1) = "0"
  96. 960       IF LEN(DM$)=2 THEN DM$ = " "+DM$
  97. 970       IF DS<10 THEN MID$(DS$,1) = "0"
  98. 980       IF LEN(DS$) = 2 THEN DS$ = " "+DS$
  99. 990       PDC$ = SG$ + DD$ + DM$ + DS$
  100. 1000   REM
  101. 1010   REM   ==== PRINT EPOCHS AND COORDINATE STRINGS ====
  102. 1020   REM
  103. 1030   PRINT : PRINT : PRINT : PRINT: PRINT:
  104. 1040       PRINT TAB(20)  "EPOCH";IN;RA$+ "  "+DEC$
  105. 1050       PRINT : PRINT
  106. 1060       PRINT TAB(20)  "EPOCH";FI;PRA$+"  "PDC$
  107. 1070       PRINT : PRINT
  108. 1080       PRINT TAB(20):INPUT "ANOTHER DATE Y/N" ;A$
  109. 1090       IF A$ = "Y" THEN GOTO 1100 ELSE 1150
  110. 1100       PRINT :PRINT :PRINT
  111. 1110       PRINT TAB(20):
  112. 1120       INPUT "ANOTHER? <S>AME OR <N>EW EPOCH" ; ANS$
  113. 1130       IF ANS$ = "S" OR ANS$ = "s" THEN GOTO 360
  114. 1140       IF ANS$ = "N" OR ANS$ = "n" THEN GOTO 240
  115. 1150       END
  116. 1160  LOCATE 24,25:PRINT "PRESS ANY KEY TO CONTINUE"
  117. 1170       IF INKEY$ = "" THEN 1170
  118. 1180       RETURN
  119.